palette: initialize with 8bit fast path buffer
authorØyvind Kolås <pippin@gimp.org>
Sun, 18 Mar 2012 02:52:00 +0000 (02:52 +0000)
committerØyvind Kolås <pippin@gimp.org>
Sun, 18 Mar 2012 02:52:00 +0000 (02:52 +0000)
babl/babl-palette.c
tests/palette.c

index a904eb83b039f067cecfa1101da59bba784992f8..3b0c84c13a80233c8b2fc88a0e897d3140629158 100644 (file)
@@ -44,6 +44,8 @@ static BablPalette *make_pal (Babl *format, void *data, int count)
   memcpy (pal->data, data, bpp * count);
   babl_process (babl_fish (format, babl_format ("RGBA double")),
                 pal->data, pal->data_double, count);
+  babl_process (babl_fish (format, babl_format ("RGBA u8")),
+                pal->data, pal->data_u8, count);
   return pal;
 }
 
@@ -108,7 +110,6 @@ rgba_to_pal (char *src,
              void *dst_model_data)
 {
   BablPalette *pal = dst_model_data;
-  
   while (n--)
     {
       int idx;
@@ -343,6 +344,7 @@ Babl *babl_new_palette (const char *name, int with_alpha)
                                 babl_type ("u8"),
                                 babl_component ("I"), NULL);
 
+if(1)
       babl_conversion_new (
           format,
           babl_format ("RGBA u8"),
index afd52f9c7244cfc707519af0be9345741534326d..7dbf74ff4ad9aa9c245b3dd4a2a3a5aa93650b81 100644 (file)
@@ -54,7 +54,6 @@ main (int    argc,
 {
   int OK = 1;
   babl_init ();
-
   {
     unsigned char in[][1]   = {{        0},{          1},{          2},{15}};
     unsigned char out[][4]  = {{0,0,0,255},{127,0,0,255},{0,127,0,255},{255,255,255,255}};
@@ -65,6 +64,7 @@ main (int    argc,
         palA, babl_format("RGBA u8"),
         in, out);
 
+
     CHECK_CONV("pal to rgba", unsigned char,
         palB, babl_format("RGBA u8"),
         in, out);
@@ -92,7 +92,7 @@ main (int    argc,
          in, out);
   }
 
-  /* check with a custom floating point palette */
+  /* check with a custom floating point palette, _and_ alpha component  */
   {
     float palette[] = {
       0.5,  1.0,
@@ -100,18 +100,19 @@ main (int    argc,
       1.0,  0.2
     };
 
-    unsigned char in[][1]   = {{              0},{          1},{          2}};
-    unsigned char out[][4]  = {{128,128,128,255},{59,59,59,107},{255,255,255,51}};
+    unsigned char in[][2]   = {{          0,255},{0,127},{       1,255},{         2,255}};
+    unsigned char out[][4]  = {{128,128,128,255},{128,128,128,127},{59,59,59,107},{255,255,255,51}};
 
-    Babl *pal = babl_new_palette (NULL, 0);
+    Babl *pal = babl_new_palette (NULL, 1);
 
     babl_palette_set_palette (pal, babl_format ("YA float"), palette, 3);
 
-    CHECK_CONV("rgba to YA float pal", unsigned char,
+    CHECK_CONV("rgba to YA float pal+alpha", unsigned char,
          pal, babl_format("RGBA u8"),
          in, out);
   }
 
+
   /* check with a custom floating point palette, _and_ alpha component  */
   {
     float palette[] = {
@@ -132,6 +133,26 @@ main (int    argc,
          in, out);
   }
 
+  /* check with a custom floating point palette */
+  {
+    float palette[] = {
+      0.5,  1.0,
+      0.23, 0.42,
+      1.0,  0.2
+    };
+
+    unsigned char in[][1]   = {{              0},{          1},{          2}};
+    unsigned char out[][4]  = {{128,128,128,255},{59,59,59,107},{255,255,255,51}};
+
+    Babl *pal = babl_new_palette (NULL, 0);
+
+    babl_palette_set_palette (pal, babl_format ("YA float"), palette, 3);
+
+    CHECK_CONV("rgba to float pal", unsigned char,
+         pal, babl_format("RGBA u8"),
+         in, out);
+  }
+
   babl_exit ();
   return !OK;
 }